Here document quoting hell

Ian Blenke 10 years ago
parent
commit
55958b96ac
1 changed files with 17 additions and 13 deletions
  1. 17 13
      docker/scripts/init

+ 17 - 13
docker/scripts/init

@@ -61,9 +61,11 @@ EOF
61 61
 
62 62
 cat <<BOOTSTRAP > /tmp/bootstrap.sh
63 63
 #!/bin/bash -xe
64
-# start mysql server if ${DATABASE_HOST} is localhost
65
-if [ "${DATABASE_HOST}" = "localhost" ]; then
66
-  if [ "${DATABASE_ADAPTER}" = "postgres" ]; then
64
+source /app/.env
65
+
66
+# start mysql server if \${DATABASE_HOST} is localhost
67
+if [ "\${DATABASE_HOST}" = "localhost" ]; then
68
+  if [ "\${DATABASE_ADAPTER}" = "postgres" ]; then
67 69
     echo "DATABASE_ADAPTER 'postgres' is not supported internally. Please provide DATABASE_HOST."
68 70
     exit 1
69 71
   fi
@@ -96,20 +98,20 @@ EOF
96 98
 
97 99
   # wait for mysql server to start (max 120 seconds)
98 100
   timeout=120
99
-  while ! mysqladmin -uroot ${DATABASE_PASSWORD:+-p$DATABASE_PASSWORD} status >/dev/null 2>&1
101
+  while ! mysqladmin -uroot \${DATABASE_PASSWORD:+-p\$DATABASE_PASSWORD} status >/dev/null 2>&1
100 102
   do
101 103
     (( timeout = timeout - 1 ))
102
-    if [ $timeout -eq 0 ]; then
104
+    if [ \$timeout -eq 0 ]; then
103 105
       echo "Failed to start mysql server"
104 106
       exit 1
105 107
     fi
106 108
     sleep 1
107 109
   done
108 110
 
109
-  if ! echo "USE ${DATABASE_NAME}" | mysql -uroot ${DATABASE_PASSWORD:+-p$DATABASE_PASSWORD} >/dev/null 2>&1; then
111
+  if ! echo "USE \${DATABASE_NAME}" | mysql -uroot \${DATABASE_PASSWORD:+-p\$DATABASE_PASSWORD} >/dev/null 2>&1; then
110 112
     DB_INIT="yes"
111
-    echo "CREATE DATABASE IF NOT EXISTS \`${DATABASE_NAME}\` DEFAULT CHARACTER SET \`utf8\` COLLATE \`utf8_unicode_ci\`;" | mysql -uroot ${DATABASE_PASSWORD:+-p$DATABASE_PASSWORD}
112
-    echo "GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON \`${DATABASE_NAME}\`.* TO 'root'@'localhost';" | mysql -uroot ${DATABASE_PASSWORD:+-p$DATABASE_PASSWORD}
113
+    echo "CREATE DATABASE IF NOT EXISTS \\\`\${DATABASE_NAME}\\\` DEFAULT CHARACTER SET \\\`utf8\\\` COLLATE \\\`utf8_unicode_ci\\\`;" | mysql -uroot \${DATABASE_PASSWORD:+-p\$DATABASE_PASSWORD}
114
+    echo "GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON \\\`${DATABASE_NAME}\\\`.* TO 'root'@'localhost';" | mysql -uroot \${DATABASE_PASSWORD:+-p\$DATABASE_PASSWORD}
113 115
   fi
114 116
 fi
115 117
 supervisorctl start huginn >/dev/null
@@ -135,15 +137,17 @@ EOF
135 137
 
136 138
 cat <<FOREMAN > /tmp/foreman.sh
137 139
 #!/bin/bash -xe
140
+source /app/.env
141
+
138 142
 # Assuming we have a created database, run the migrations and seed it idempotently.
139
-[ -z "${DO_NOT_MIGRATE}" ] && sudo -u huginn -EH bundle exec rake db:migrate
140
-[ -z "${DO_NOT_SEED}" ] && sudo -u huginn -EH bundle exec rake db:seed
143
+[ -z "\${DO_NOT_MIGRATE}" ] && sudo -u huginn -EH bundle exec rake db:migrate
144
+[ -z "\${DO_NOT_SEED}" ] && sudo -u huginn -EH bundle exec rake db:seed
141 145
 
142
-[ -n "$INTENTIONALLY_SLEEP" ] && sleep $INTENTIONALLY_SLEEP
146
+[ -n "\$INTENTIONALLY_SLEEP" ] && sleep \$INTENTIONALLY_SLEEP
143 147
 
144 148
 # Fixup the Procfile and prepare the PORT
145
-[ -n "${DO_NOT_RUN_JOBS}" ] && perl -pi -e 's/^jobs:/#jobs:/' /app/Procfile
146
-perl -pi -e 's/rails server$/rails server -p \$PORT/' /app/Procfile
149
+[ -n "\${DO_NOT_RUN_JOBS}" ] && perl -pi -e 's/^jobs:/#jobs:/' /app/Procfile
150
+perl -pi -e 's/rails server\$/rails server -p \\\$PORT/' /app/Procfile
147 151
 export PORT
148 152
 
149 153
 # Start huginn